﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using GestionePolveriLib.BL.Metadata;

namespace GestionePolveriLib.BL
{
    [Serializable]
    [MetadataType(typeof(ComposizioneColore2Metadata))]
    public class ComposizioneColore2
    {
        private bool? m_superata = false;
        private bool? m_ufficiale = false;

        public bool? Superata
        {
            get { return m_superata; }
            set 
            {
                m_superata = value;

                if (!m_superata.HasValue) m_superata = false;
            }
        }
       
        public bool? Ufficiale
        {
            get { return m_ufficiale; }
            set 
            {
                m_ufficiale = value;

                if (!m_ufficiale.HasValue) m_ufficiale = false;
            }
        }

        //[Browsable(false)]
        public int ID { get; set; }
        //[Browsable(false)]
        public Colore Colore { get; set; }
        //[Browsable(false)]
        public PolvereExt PolvereBase { get; set; }
        //[Browsable(false)]
        public PolvereExt PolvereVenatura { get; set; }

        public bool IsNew { get; set; }
        public bool IsModified { get; set; }

        public string CodiceColore { get { return this.Colore.CodiceColore; } }
        public string FamigliaColore { get { return this.Colore.Famiglia.Descrizione; } }
        public string DescrizioneColore { get { return this.Colore.Descrizione; } }
        public string NoteColore { get { return this.Colore.Note; } }

        public string FornitoreBase { get { return (PolvereBase == null ? string.Empty : this.PolvereBase.Fornitore.Descrizione); } }
        public string CodicePolvereBase { get { return (PolvereBase == null ? string.Empty : this.PolvereBase.CodicePolvere); } }
        public string NoteBase { get { return (this.PolvereBase == null ? string.Empty : PolvereBase.Note); } }
        public string FornitoreVenatura { get { return (PolvereVenatura == null ? string.Empty: PolvereVenatura.Fornitore.Descrizione); } }
        public string CodicePolvereVenatura { get { return (PolvereVenatura == null ? string.Empty : PolvereVenatura.CodicePolvere); } }
        public string NoteVenatura { get { return (PolvereVenatura == null ? string.Empty : PolvereVenatura.Note); } }



        //
        public ComposizioneColore2()
        {
            IsNew = false;
            IsModified = false;

            PolvereVenatura = null;
            PolvereBase = null;

            Ufficiale = false;
            Superata = false;
        }
    }
}
